//
// Created by WWR on 2025/7/26.
//
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include "st_log.h"
#include "usart.h"

char _OUT_BUF[BUF_SIZE_MAX+20];

/******************************************************************************************************
*	函 数 名: ST_LOG
*	入口参数: Level - 输出日志等级
*		    TAG	- 日志标签
 *		    format - 输出格式化字符串
*	返 回 值: 无
*	函数功能: SDRAM 参数配置
*	说    明: 配置SDRAM相关时序和控制方式
*******************************************************************************************************/
void ST_LOG(LOG_Level Level , char *TAG,char *format, ...){
    char String[BUF_SIZE_MAX];				//发送缓冲区
    va_list arg;							//定义可变参数列表数据类型的变量arg
    va_start(arg, format);					//从format开始，接收参数列表到arg变量
    vsprintf(String, format, arg);			//使用vsprintf打印格式化字符串和参数列表到字符数组
    va_end(arg);							//结束变量arg

    float_t sys_time = (float_t)uwTick/1000;        // 获取系统时间戳（ 49.71 天后溢出）

    switch (Level) {
        case LOG_D:{
            sprintf(_OUT_BUF,"D [%.2f] %s: %s\r\n",sys_time,TAG,String);
        }break;
        case LOG_E:{
            sprintf(_OUT_BUF,"E [%.2f] %s: %s\r\n",sys_time,TAG,String);
        }break;
        case LOG_I:{
            sprintf(_OUT_BUF,"I [%.2f] %s: %s\r\n",sys_time,TAG,String);
        }break;
        case LOG_W:{
            sprintf(_OUT_BUF,"W [%.2f] %s: %s\r\n",sys_time,TAG,String);
        }break;
        default:break;
    }
    HAL_UART_Transmit(&huart1,_OUT_BUF, strlen(_OUT_BUF),20);
}
